<?php

namespace App\Model\Baiyou;

use App\Model\BaseModel;
use EasySwoole\EasySwoole\Config;
use EasySwoole\ORM\Utility\Schema\Table;


/**
 * This is the model class for table "{{%patient_user}}".
 *
 * @property int $id
 * @property int $project_id 项目ID
 * @property string $patient_card_id 诊疗号
 * @property string $name 患者姓名
 * @property string $birthday 生日
 * @property int $age 年龄
 * @property string $wx_name 微信号
 * @property string $nickname 微信昵称
 * @property int $source_channel_id 来源渠道ID【by_marketing_source_channel】
 * @property int $gender 性别[0:未知;1:男;2:女]
 * @property string $mobile 手机号
 * @property int $city_id 城市ID【对应by_common_provinces id】
 * @property string $city_name 城市名称
 * @property string $address 详细地址
 * @property int $patient_diseases_id 病种ID【by_base_patient_diseases】
 * @property int $patient_diseases_child_id 二级病种ID【by_base_patient_diseases】
 * @property string $patient_body_parts_name 部位（冗余字段）【多个用','分割】
 * @property string $patient_tags_name 患者标签（冗余字段）【多个用','分割】
 * @property int $belong_assistant_id 医助归属人id，关联member表
 * @property int $belong_member_id 客服归属人id，关联member表
 * @property string $belong_member_name 客服归属人姓名， 冗余字段
 * @property int $effect_type_id 效果类型 ID【by_marketing_effect_type】
 * @property int $risk_type_id 风控类型ID【by_marketing_risk_type】
 * @property int $clinic_assess_id 诊疗评估ID【by_marketing_clinic_assess】
 * @property int $outpatient_type_id 就诊类型 ID【by_marketing_outpatient_type】
 * @property int $last_clinic_time 上次治疗时间
 * @property int $last_infusion_time 上次输液时间
 * @property int $clinic_id 诊室ID【by_clinic】
 * @property string $profession 职业
 * @property int $reg_time 初次挂号时间
 * @property int $last_revisiting_time 上次到诊日期（上次来院时间）
 * @property int $kf_next_callback_time 客服下次回访日期
 * @property int $kf_last_callback_time 客服上次回访日期
 * @property int $kf_last_callback_id 客服上次回访人ID
 * @property string|null $kf_last_callback_user 客服上次回访人
 * @property int|null $kf_callback_count 客服回访总次数
 * @property int $yz_last_callback_time 医助上次回访日期
 * @property int $yz_next_callback_time 医助下次回访日期
 * @property int $yz_last_callback_id 医助上次回访人ID
 * @property string|null $yz_last_callback_user 医助上次回访人
 * @property int|null $yz_callback_count 医助回访总次数
 * @property int $next_revisiting_time 下次复诊日期
 * @property int $last_callback_time 上次回访日期（作废）
 * @property int $next_callback_time 下次回访日期（作废）
 * @property int $callback_count 总回访次数（包括医助、客服和其它岗位的所有回访总次数）
 * @property int|null $is_anti_relapse 是否为抗复发（0：否， 其它数字代表抗复发的年限） - 抗复发的患者不算断诊
 * @property int $is_introduce 是否为介绍号（0：不是  1：是）
 * @property int|null $anti_relapse_year 抗复发年限
 * @property int $missed_days 未到诊天数【=当前时间-上次就诊时间（最近）】
 * @property int $revisiting_count 来院次数（来一次算一次，当天来多次，算一次）
 * @property int $fault_diagnosis_count 断诊次数
 * @property string|null $remark 备注
 * @property int $status 状态【-1删除、0禁用、1启用】
 * @property int $modify_time 最后一次更新时间（从微信端数据库同步数据时使用）
 * @property float $degree_num 完善度（eg: 0.65，代表65%）
 * @property int|null $serial_no 奕远自增id - 便于跟hosptial表比对数据
 * @property int $created_at 创建时间
 * @property int $updated_at 更新时间
 */
class PatientUser extends BaseModel
{
    const IS_ANTI_RELAPSE_NO = 0;// 抗复发【否】
    const IS_ANTI_RELAPSE_YES = 1;// 抗复发【是】

    const IS_INTRODUCE_NO = 0;// 介绍号【否】
    const IS_INTRODUCE_YES = 1;// 介绍号【是】

    const STATUS_DELETE = -1;// 删除
    const STATUS_INVALID = 0;// 失效
    const STATUS_ENABLE = 1;// 正常

    const GENDER_UNKNOWN = 0;// 未知
    const GENDER_MAN = 1;// 男性
    const GENDER_WOMAN = 2;// 女性
    const SERIAL_NO_DT = -1; // serial_no  = -1 灯塔来源

    public static $status = [
        self::STATUS_DELETE => '删除',
        self::STATUS_INVALID => '停用',
        self::STATUS_ENABLE => '启用',
    ];

    public static $genders = [
        self::GENDER_UNKNOWN => '未知',
        self::GENDER_MAN => '男',
        self::GENDER_WOMAN => '女',
    ];

    // 指定连接名称
//    protected $connectionName = 'dengta';

    public function __construct(array $data = [])
    {
        $tablePrefix = Config::getInstance()->getConf("MYSQL.tablePrefix");
        $name = $tablePrefix . "patient_user";
        $this->tableName($name);

        parent::__construct($data);
    }
}
